Mumlar ve rsi ve de macd
- Soruldu
- Kategori
- Algoritmik Trading
- Görüntülenme
- 2.812 görüntülenme
- Durum
- Cevaplandı
Matriks Ürünleri ile ilgili tüm sorularınız için bizlere buradan ulaşabilirsiniz. Daha önce sorulan soruları ve verilen cevapları ilgili sekmelerden ve arama üzerinden inceleyebilirsiniz. Sağ taraftaki kategoriler üzerinden İlgilendiğiniz özelliklerle ilgili soruları filtreleyebilirsiniz. Soru ve cevapları sosyal medyada paylaşabilirsiniz. Sorduğunuz ve cevapladığınız soruların ve yorumlarınızın aldığı oylar üzerinden puan kazanırsınız. Puan sistemine bağlı kampanyamızla ücretsiz kullanım avantajlarından faydalanabilirsiniz.
Merhaba,
Strateji ornegi asagidadir. mum altta kapandiktan sonra tetiklenir, RSI'in yukselise gecmesini ve MACD'nin pozitif sinyalde olmasini bekler.
RSI'in yukselise ya da dususe gectigi 2 periyottan sonra karar verilir. Yani RSI icin son barda ve bir onceki barda da yukseliyor olmasi sarti aranir.
RSI yukseliyor ve MACD pozitif sinyali durumu olustuktan sonra alim yapilir
Mum yuksekte kapandiginda ve RSI yukseliyor + MACD pozitif sinyali geldikten sonra ise satis yapilir.
Strateji calisirken ne yaptigina dair detayli bilgileri, stratejiyi calistirdiktan sonra acilan strateji raporu penceresinde Debug ve Loglar tab'lerinden takip edebilirsiniz. SendOrderSequential(true); set edildiginden Strateji ilk olarak alim emri ile baslayacak, sonra satis emri gonderebilecektir.
Kullanicilara IQ Algo ilk kullanmaya basladiklarinda yardimci olmak acisindan kod yazma disinda, sinirsiz destek veremiyoruz. Kullanicilarin ornek stratejilerden, sablonlardan, matriks destek platformu ve IQ Algo teknik dokumanindan, C# ile ilgili online fazla sayida mevcut yardim ve ogrenim sayfalarindan yararlarnmasini tavsiye ediyoruz.
***STRATEJILERI TEST/DENEME ORTAMINDA SINAMADAN VE SIZIN ISTEDIGINIZ SEKILDE CALISTIGINA EMIN OLMADAN GERCEK ORTAMDA HIC BIR ZAMAN CALISTIRMAYIN***
using System;
using System.Collections.Generic;
using System.Linq;
using Matriks.Data.Symbol;
using Matriks.Engines;
using System.Windows.Media;
using Matriks.Indicators;
using Matriks.Symbols;
using Matriks.AlgoTrader;
using Matriks.Trader.Core;
using Matriks.Trader.Core.Fields;
using Matriks.Trader.Core.TraderModels;
using Matriks.Lean.Algotrader.AlgoBase;
using Matriks.Lean.Algotrader.Models;
using Matriks.Lean.Algotrader.Trading;
/*Merhaba mumlar en altta iken kapanis yaptiginda satin almasini istiyorum ve mumlar en
ustte kapani macd kesismesinde alsin Simdiden tesekkur ederim..
bir eklemek istedigim birsey daha var 1 dakikalik ve suresini ayarlamakta istiyorum
dakikalik,5dakikalik v.s Satis icin tavanda ornegin 1 dakikalik kapanis yapildiginda
satis islemi geerceklessin rsi asagi yone seyir verdiginde ve eger atlama olursa macd
kesismesinde satisi versin gibi simdiden tesekkurler*/
//Strateji mum altta kapandiktan sonra tetiklenir, RSI'in yukselise gecmesini ve MACD'nin pozitif sinyalde olmasini bekler
//RSI'in yukselise ya da dususe gectigi 2 periyottan sonra karar verilir. Yani RSI son barda ve bir onceki barda da yukseliyor olma sarti aranir.
//RSI yukseliyor ve MACD pozitif sinyali durumu olustuktan sonra alim yapilir
//Mum yuksekte kapandiginda ve RSI yukseliyor + MACD pozitif sinyali geldikten sonra ise satis yapilir
namespace Matriks.Lean.Algotrader
{
public class mumAl : MatriksAlgo
{
// Strateji çalıştırılırken kullanacağımız parametreler. Eğer sembolle ilgili bir parametre ise,
// "SymbolParameter" ile, değilse "Parameter" ile tanımlama yaparız. Parantez içindeki değerler default değerleridir.
[SymbolParameter("TUPRS")]
public string Symbol;
[Parameter(SymbolPeriod.Min)]
public SymbolPeriod SymbolPeriod;
[Parameter(1)]
public int Quantity;
int BUY_Flag = 0, SELL_Flag = 0;
RSI rsi;
MACD macd;
/// <summary>
/// Strateji ilk çalıştırıldığında bu fonksiyon tetiklenir. Tüm sembole kayit işlemleri,
/// indikator ekleme, haberlere kayıt olma işlemleri burada yapılır.
/// </summary>
public override void OnInit()
{
macd = MACDIndicator(Symbol, SymbolPeriod, OHLCType.Close, 26, 12, 9);
rsi = RSIIndicator(Symbol, SymbolPeriod, OHLCType.Close, 14);
AddSymbol(Symbol, SymbolPeriod);
//Eger backtestte emri bir al bir sat seklinde gonderilmesi isteniyor bu true set edilir.
//Alttaki satırı silerek veya false geçerek emirlerin sirayla gönderilmesini engelleyebilirsiniz.
SendOrderSequential(true);
WorkWithPermanentSignal(true);
}
/// <summary>
/// Init islemleri tamamlaninca, bardatalar kullanmaya hazir hale gelince bu fonksiyon tetiklenir. Data uzerinde bir defa yapilacak islemler icin kullanilir
/// </summary>
public override void OnInitComplated()
{
}
/// <summary>
/// Eklenen sembollerin bardata'ları ve indikatorler güncellendikçe bu fonksiyon tetiklenir.
/// </summary>
/// <param name="barData">Bardata ve hesaplanan gerçekleşen işleme ait detaylar</param>
public override void OnDataUpdate(BarDataCurrentValues barDataCurrentValues)
{
var barDataModel = GetBarData(Symbol, SymbolPeriod);
var open = barDataModel.Open[barDataCurrentValues.LastUpdate.BarDataIndex - 1];
var high = barDataModel.High[barDataCurrentValues.LastUpdate.BarDataIndex - 1];
var low = barDataModel.Low[barDataCurrentValues.LastUpdate.BarDataIndex - 1];
var close = barDataModel.Close[barDataCurrentValues.LastUpdate.BarDataIndex - 1];
var rsi_current = Math.Round(rsi.CurrentValue,2);
var PrevRsi = Math.Round(Ref(rsi,1),2);
var Prev2Rsi = Math.Round(Ref(rsi,2),2);
var MACD_current = Math.Round(macd.Macd.CurrentValue,2);
var MACD_Trigger_current = Math.Round(macd.MacdTrigger.CurrentValue,2);
Debug($"Open = {open}, High = {high}, Low = {low}, Close = {close}");
Debug($"BUY_Flag = {BUY_Flag}, SELL_Flag = {SELL_Flag}");
Debug($"rsi = {rsi_current}, PrevRsi = {PrevRsi}, Prev2Rsi = {Prev2Rsi}");
Debug($"MACD = {MACD_current}, MACD_Trigger = {MACD_Trigger_current}");
if (close == low) { BUY_Flag = 1; SELL_Flag = 0; }
else if (close == high) { SELL_Flag = 1; BUY_Flag = 0; }
if(BUY_Flag==1 && (rsi.CurrentValue >= Ref(rsi,1)) && (Ref(rsi,1) > Ref(rsi,2)))
{
if(MACD_current > MACD_Trigger_current)
{
SendMarketOrder(Symbol, Quantity, OrderSide.Buy);
Debug("Alis emri gonderildi.");
BUY_Flag = 0;
}
}
if(SELL_Flag == 1 && (rsi.CurrentValue <= Ref(rsi,1)) && (Ref(rsi,1) < Ref(rsi,2)))
{
if(MACD_current < MACD_Trigger_current)
{
SendMarketOrder(Symbol, Quantity, OrderSide.Sell);
Debug("Satis emri gonderildi.");
SELL_Flag = 0;
}
}
}
/// <summary>
/// Gönderilen emirlerin son durumu değiştikçe bu fonksiyon tetiklenir.
/// </summary>
/// <param name="barData">Emrin son durumu</param>
public override void OnOrderUpdate(IOrder order)
{
if (order.OrdStatus.Obj == OrdStatus.Filled)
{
}
}
}
}
10498.5
--------------------------------------------------------------------------------------------------
Önemli Linkler:
MatriksIQ Yardım Dokumanı
MatriksIQ Algo Teknik Dokuman
MatriksIQ’nun öne çıkan özellikleri - Canlı Yayın'dan kayıt
MatriksIQ Videolar
IQ Algoritma Sihirbazını Nasıl Kullanırız
"Binance de deniyorum olumlu sonuc ama alis/satis yazmak icin olan yer yok efendim onuda ekleyebilirmisiniz rica etsem"
Tabi, stratejiniz benim yukariya yazdigim kodu kopyalayip basarili sekilde isimlendirebilyseniz, icerisinde Al/Sat komutlari vardir ve calistirdiginizda gonderilir emirler.
Yazdigim kodu yeni strateji olusturup icerisine kopyalamaniz gerekmekte.

Strateji ismi mumAl olmali (buyuk kucuk harf duyarli). Daha sonra strateji editorunde asagidaki gibi Kodu Derle'ye tiklamaniz gerekmekte:

Daha sonra IQ Algo menusu -> Strateji Listesine tiklayip mumAl stratejisinde calistir diyorum:

Yalniz yukariya yazdigim uyariyi da dikkate aliniz:
***STRATEJILERI TEST/DENEME ORTAMINDA SINAMADAN VE SIZIN ISTEDIGINIZ SEKILDE CALISTIGINA EMIN OLMADAN GERCEK ORTAMDA HIC BIR ZAMAN CALISTIRMAYIN***
Binance bir test ortami degildir, bu yuzden direkt binance'de gercek hesap uzerinde calistirmanizi tavsiye etmiyorum. Matriks deneme ortaminda calistiriniz once.
Binance'de calistirmakta israr ediyorsaniz PAX_USDT_BIN sembolunde calistirin, bu 2 stabil para arasinda oldugu icin kaybiniz olursa da cok dusuk olacaktir.
-------------------------------------------------------------------------------
"Evet komut cok guzel ama binancede de kullanacagim olumlu sonuc veri ve limiti al/sat fiyatini binancede kendim yazmak istiyorum eger olabilirse tesekkurler simdiden efendim"
Yazmissiniz, alim satim fiyatini kendiniz yazarsaniz stratejinin bir anlami kalmaz ki? Strateji kosullar gerceklestiginde PIYASA emri gondermekte, mevcut fiyattan alim satim yapmaktadir.
--------------------------------------------------------------------------------------------------
Önemli Linkler:
MatriksIQ Yardım Dokumanı
MatriksIQ Algo Teknik Dokuman
MatriksIQ’nun öne çıkan özellikleri - Canlı Yayın'dan kayıt
MatriksIQ Videolar
IQ Algoritma Sihirbazını Nasıl Kullanırız
Efendim bunlari yapmak icin stratejiye ihtiyaciniz yok ki, bunun icin emir penceresini kullanin lutfen.
Eger strateji'yi 2000 dolarlik ve BTC_USDT paritesinde calistirmak istiyorum derseniz:
o zaman BTC_USDT su anki degeri = 10748
kullanmak istediginiz para miktari $2000 / $10748 = 0.186
Bu degeri QUANTITY kismina yazdiginizda 2bin dolarlik alis satis yapmaya baslar. Yanliz dedigim gibi bunu yapmayin. Stratejide olusabilecek bir hata ya da sizin istemediginiz bir calisma durumunun olmasina karsi stratejinizi once test etmeniz gerekmektedir.
PAX_USDT_BIN sembolunu kullanarak QUANTITY kismina 11 yazin. Strateji calisacaktir. Log ve DEBUG tab'lerinden stratejiyi takip edin.
Stratejiyi matriks deneme ortaminda da calistirabilrisiniz.
Daha fazla destek isterseniz teknik departmanimizi arayabilirsiniz +90 212 354 54 54.
Sitenin çalışması için gerekli çerezleri kullanıyoruz. Ziyaretleri anlamak için analitik çerezleri yalnızca onayınızla kullanırız. Çerez Politikası